/**
 * 管理员重置学生和教师的密码
 * 学生密码重置为学号后6为
 * 教师密码重置为校园卡号
 * 
 * /admin/user/resetpassword
 */


const User_info = require('../../../models/usersInfo')
const Users = require('../../../models/users')
const utils = require('../../../utils/index')
const MySQLManager = require('../../../utils/MySQLManager');
const $ = require('../../../utils/common')
const sequelize = MySQLManager
const Sequelize = require('sequelize')
const Op = Sequelize.Op

const reset_password = async function (req, res) {
    // 参数判断
    if (!req.body.id) {
        $.sendMessage(res, 1015, '参数id没有传')
        return
    }
    // $.log('参数 ：', req.body.id)

    //根据id找到响应的user_name ， 用user_name设置

    var user = await User_info.findOne({
        where: {
            id: req.body.id
        },
        attributes: ['user_name', 'user_role']
    })

    if (user == null) {
        $.sendMessage(res, 1015, '无效id')
        return
    }

    // 获取重置密码
    var new_password = ''
    
    // 因为现在学生学号格式不是很正确，所以默认密码先定位学号
    if (user.dataValues.user_role == 'student') {
        new_password = user.dataValues.user_name.substr(4) + ''
    }

    if (user.dataValues.user_role == 'xingzheng_teacher' || user.dataValues.user_role == 'jiaoyan_teacher') {
        new_password = user.dataValues.user_name + ''
    }
    
    var user_name = user.dataValues.user_name
    // 事务
    return sequelize.transaction(function (t) {   
        return Users.update(
        {
            user_password: new_password + ''
        },
        {
            where: {
                user_name: user_name + ''
              }
        }
        , 
        {transaction: t}).then(function (user) {
          return User_info.update(
            {
                user_password: new_password + ''
            },
            {
                where: {
                    user_name: user_name + ''
                  }
            }
            , {transaction: t});
        });
      
      }).then(function (result) {
          res.json({
              code: 200,
              message: '重置密码成功',
              result: result
          })
        // 事务已被提交
        // result 是 promise 链返回到事务回调的结果

        var str = user.dataValues.user_role == 'student' ? '学生信息' : "教师信息"
        // // 日志
        utils.create_a_log(req, str, '重置密码')
        return
      }).catch(function (err) {
          res.json({
              code: 1017,
              message: '重置密码失败',
              err: 'err' + err
          })
          utils.create_a_log(req, str, '重置密码', '失败')
          return
        // 事务已被回滚
        // err 是拒绝 promise 链返回到事务回调的错误
      });
}
    
module.exports = reset_password